#pragma once

#include "Containers/Vector.h"
#include "ScriptCompiler/ASTBuilder/ASTBuilder.h"
#include "ScriptCompiler/AST/NamespaceNode.h"

class CNamespaceBuilder : public IASTBuilder
{
public:
    CNamespaceBuilder(std::shared_ptr<CScriptFileContext> InContext,bool InIsGlobal=false);

    virtual bool ReadCurentToken() override;

    std::shared_ptr<CNamespaceNode> Result;
protected:
    std::shared_ptr<CScriptFileContext> Context;

    enum EState
    {
        WatingNamespacekeyword,
        WatingNamespaceName,
        WatingLeftBrace,
        WatingRightBrace,
    };

    EState State;
};